using Mt.Site.Core.Taxonomys.Entities;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Core.Taxonomys
{
    public interface ITaxonomysManager
    {
        Task<Taxonomy> CreateTaxonomysAsync(Taxonomy entity);

        Task UpdateTaxonomysAsync(Taxonomy entity);

        Task DeleteTaxonomyAsync(Guid id, int tenantId, string languageName);


        Task<TaxonomysItem> CreateTaxonomysItemAsync(TaxonomysItem entity);

        Task<TaxonomysItem> UpdateTaxonomysItemAsync(TaxonomysItem entity);

        Task DeleteTaxonomysItemAsync(Guid id, int tenantId, string languageName, Guid typeId);


        Task CreateTaxonomysItemBindAsync(Guid itemId);

        Task DeleteTaxonomysItemBindAsync(Guid id);

        Task<List<TaxonomysItem>> ChangeTaxonomyItemSort(Guid id,bool up);

        Task<string> GetCodeAsync(Guid id);

        Task MoveAsync(Guid id, Guid? parentId);

        Task<List<TaxonomysItem>> FindChildrenAsync(Guid? parentId, Guid typeId, bool recursive = false);

        Task<List<ItemStorage>> GetTaxonomyItemCollectionAsync(Guid id,string cultureName);

        Task<List<ItemStorage>> GetTaxonomyItemTreeByParentIdAsync(Guid? parentId, Guid? typeId, string cultureName);
    }
}
